package com.qf.controller;

import com.qf.pojo.User;
import org.apache.commons.io.IOUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import sun.nio.ch.IOUtil;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.xml.crypto.Data;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;
import java.util.UUID;

/**
 * @RequestBody:
 *  使用时机： 异步请求，请求体传参（post）， 参数类型为 json
 *  作用：可以 把请求体中的json数据，转换为 java对象
 *
 * @ResponseBody:
 *  使用时机： 异步请求
 *  作用：可以把方法的返回值按照json格式返回到前端
 *      字符串 原样返回   对象或者集合 转换为json返回\
 *  可以写在方法上或者类上， 类上，所有方法都有效
 *
 * @RestController = @Controller + @ResponseBody
 *
 *
 * @author 千锋教育
 * @Company http://www.mobiletrain.org/
 * @Version 1.0
 */
@Controller
@RequestMapping("/JsonController")
public class JsonController {


    @RequestMapping("/login")
    public String login(HttpSession session, String username, String password, String code){
        //从session中获取验证码
        String captcha = (String) session.getAttribute("captcha");
        System.out.println(username);
        System.out.println(password);
        System.out.println(captcha);
        if (code != null && code.equalsIgnoreCase(captcha)){
            return "/success.jsp";
        }
        return "/error.jsp";
    }

    /*
    MultipartFile ：接受文件对象;
     */
    @RequestMapping("/upload")
    public String upload(String username, MultipartFile file, HttpServletRequest request, HttpServletResponse response,HttpSession session) throws IOException {
        System.out.println(username);
        System.out.println(file);
        String name = file.getOriginalFilename();//获取原文件名,包含后缀！
        String uuid = UUID.randomUUID().toString();
        System.out.println(uuid+"-"+name);
        //获取服务器器路径
        String realPath = session.getServletContext().getRealPath("/upload");
        System.out.println(realPath);
        //创建文件绝对路径
        File f = new File(realPath);
        //如果不存在则创建该路径
        if (!f.exists()){
            f.mkdirs();
        }
        //上传文件到服务器
        file.transferTo(new File(f,uuid+"-"+name));
        return "/success.jsp";
    }
    @RequestMapping("/download")
    public void download(HttpServletResponse response,HttpSession session) throws IOException {
        //获取服务器器路径
        String realPath = session.getServletContext().getRealPath("/upload");
        File f = new File(realPath,"da2a6e0a-c6a8-469b-98b2-9145c76a8cc2-2.jpg");
        //设置响应头  告知浏览器，要以附件的形式保存内容   filename=浏览器显示的下载文件名
        response.setHeader("content-disposition","attachment;filename="+"da2a6e0a-c6a8-469b-98b2-9145c76a8cc2-2.jpg");
        //参数1，输入流（从哪复制）
        //参数2，输出流（复制到哪）
        //
        IOUtils.copy(new FileInputStream(f),response.getOutputStream());
        
    }

//    @PostMapping("/testPost")
//    public String testPost(@RequestBody User user){
//        System.out.println(user);
//        return "success";
//    }
//
//    @GetMapping("/testGet")
//    public User testGet(){
//        User user = new User();
//        user.setId(1);
//        user.setUsername("李四");
//        user.setSex('女');
//        user.setFlag(true);
//        user.setBirth(new Date());
//        user.setSalary(100.0);
//        return user;
//    }
}
